#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h" /* 引入 gpio 外设 */
#include "esp_log.h"
#include "sdkconfig.h"


static const char *TAG = "example";

/**
 * 任务相关定义
*/
TaskHandle_t ledD4_taskHandle = NULL; /* 任务句柄 */

/**
 * 函数声明
*/
void led4_task(void* arg);

uint8_t LED_PORT = GPIO_NUM_2; /* 定义 LED 的引脚，GPIO_NUM_2 是 ESP-IDF 定义好的，代表 io 号*/

uint8_t LED_D4_PORT = GPIO_NUM_4; /* 接在 D4 上的 LED IO口定义 */



void app_main(void)
{
    gpio_reset_pin(LED_PORT);
    gpio_set_direction(LED_PORT, GPIO_MODE_OUTPUT);

    xTaskCreate(led4_task, "LED_D4_Task", 1024 * 2, NULL, 0, &ledD4_taskHandle);


    if (ledD4_taskHandle == NULL)
    {
        ESP_LOGI(TAG, "LED_D4_Task 任务创建失败");
    }

    uint32_t led_flag = 0;
    while(1) {

        ESP_LOGI(TAG, "Hello,World");
        gpio_set_level(LED_PORT, led_flag); /* 设置 gpio 输出高或低 */
        led_flag ^= 1; /* 对 led_flag 异或 1 等于 */
        vTaskDelay(1000/portTICK_PERIOD_MS);
    }
}

void led4_task(void* arg)
{
    uint8_t led_flag = 0;
    gpio_reset_pin(LED_D4_PORT);
    gpio_set_direction(LED_D4_PORT, GPIO_MODE_OUTPUT);
    while(1)
    {
        gpio_set_level(LED_D4_PORT, led_flag); /* 设置 gpio 输出高或低 */
        led_flag ^= 1; /* 对 led_flag 异或 1 等于 */
        vTaskDelay(500/portTICK_PERIOD_MS);
    }
}


